Package gwtappcontainer.server.apps.insight

Source Code of gwtappcontainer.server.apps.insight.MemberRepositoryTest

package gwtappcontainer.server.apps.insight;

import static org.junit.Assert.assertTrue;
import gwtappcontainer.server.Limits;
import gwtappcontainer.server.apps.APIException;
import gwtappcontainer.server.apps.security.PrivilegeRepository;
import gwtappcontainer.server.apps.security.SecurityAPITest;
import gwtappcontainer.server.apps.security.UserRepository;
import gwtappcontainer.shared.apis.APIResponse.Status;
import gwtappcontainer.shared.apps.insight.Center;
import gwtappcontainer.shared.apps.insight.Member;
import gwtappcontainer.shared.apps.insight.Member.ContactDetails;
import gwtappcontainer.shared.apps.insight.ProgramType;
import gwtappcontainer.shared.apps.insight.UnlistedProgram;
import gwtappcontainer.testhelpers.TestHelper;

import java.util.ArrayList;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;

public class MemberRepositoryTest {
   
 
  private final static String SUPER_USER = "sathyanarayanant@gmail.com";
  private final static String USER_WITH_EDITMEMBER_PRIVILEGE = "userwitheditmember@previlege.com";
  private final static String VALID_USER = "validuser@previlege.com";
 
  private final LocalServiceTestHelper helper =
            new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());         
   
  @Before
  public void setUp() {
    System.setProperty("junittesting", "true");
    helper.setUp();
   
    PrivilegeRepository.addPrivilege(Privileges.EDIT_MEMBER, SUPER_USER);
    UserRepository.addUser(USER_WITH_EDITMEMBER_PRIVILEGE, SUPER_USER);
    UserRepository.assignPrivilegeToUser(USER_WITH_EDITMEMBER_PRIVILEGE,
        Privileges.EDIT_MEMBER, SUPER_USER);
    UserRepository.addUser(VALID_USER, SUPER_USER);
  }
 
  @After
  public void tearDown() {
    TestHelper.deleteAllData();
    SecurityAPITest.purgeAllSecurityEntities();
    helper.tearDown();
  }
 
  @Test
  public void getTest() {
    Center sgp = CenterRepository.add("singapore");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";
    contactDetails.email = "sathya.t@ishafoundation.org";
   
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
   
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", "sathya.t@ishafoundation.org");
       
    assertTrue(member != null);
    assertTrue(member.id != 0);
    assertTrue(member.contactDetails.firstName.equals("sathya"));
    assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(member.owningCenter.id == sgp.id);
    assertTrue(member.owningCenter.name.equals("singapore"));
   
    //cannot get by non existant email or id
    assertTrue(null == MemberRepository.get("nonexistant@email.com", SUPER_USER));
    assertTrue(null == MemberRepository.get(1093890, SUPER_USER));
   
    Center penang = CenterRepository.add("penang");
    Center kl = CenterRepository.add("kl");
    MemberRepository.addCenter(member.id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE);
    MemberRepository.addCenter(member.id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
   
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.id != 0);
    assertTrue(member.contactDetails.firstName.equals("sathya"));
    assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(member.additionalCenters.size() == 2);
    //should be sorted by center name
    assertTrue(member.additionalCenters.get(0).name.equals("kl"));
    assertTrue(member.additionalCenters.get(1).name.equals("penang"));
   
    //privilege test
    //should be a valid user to get by id
    member = MemberRepository.get(member.id, VALID_USER);
   
    //invalid user cannot get member
    try {
      MemberRepository.get(member.id, "invaliduser@invalid.com");
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INVALID_USER);
    }
   
    //member can view his own entry
    member = MemberRepository.get(member.id, "sathya.t@ishafoundation.org");
    member = MemberRepository.get("sathya.t@ishafoundation.org", "sathya.t@ishafoundation.org");
  }
 
  @Test
  public void addTest() {
    Center sgp = CenterRepository.add("singapore");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";   
    contactDetails.email = "invalid email";
   
    //cannot add an invalid email
    try {
      MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
    }
   
    contactDetails.email = "sathya.t@ishafoundation.org";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
       
    assertTrue(member != null);
    assertTrue(member.id != 0);
    assertTrue(member.contactDetails.firstName.equals("sathya"));
    assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
   
    //cannot add a duplicate email address
    try {
      MemberRepository.add(member.contactDetails, member.owningCenter.id, SUPER_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_ALREADY_EXISTS);
    }
   
    //cannot add without primary center
    try {
      MemberRepository.add(contactDetails, 0, SUPER_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
    }
   
    try {
      MemberRepository.add(contactDetails, 100, SUPER_USER); //non existent center
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
    }
           
    //test privilege
    try {
      MemberRepository.add(contactDetails, sgp.id, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
   
    contactDetails.email = "sathya.isha@gmail.com";
    MemberRepository.add(contactDetails, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
    //no exception
  }
 
  @Test
  public void updateContactDetailsTest() {
    Center sgp = CenterRepository.add("singapore");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";
    contactDetails.email = "sathya.isha@gmail.com";       
   
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
       
    Member member = MemberRepository.get("sathya.isha@gmail.com", SUPER_USER);
    assertTrue(null != member);
    int id = member.id;
   
    //update contact details
    contactDetails.firstName = "sathyanarayanan";
    contactDetails.lastName = "thilakan";
    contactDetails.email = "sathya.t@ishafoundation.org";
    contactDetails.phone = "+6598361844";
    contactDetails.homeAddress = "blk 292b, 09-210, compassvale street";
    contactDetails.officeAddress = "level 28, south tower, one raffles quay";
    contactDetails.homePhone = "6565227030";
    contactDetails.officePhone = "6563083013";
    contactDetails.singaporeNRIC = "s8097340D";
   
    MemberRepository.updateContactDetails(id, contactDetails, SUPER_USER);
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.firstName.equals(contactDetails.firstName));
    assertTrue(member.contactDetails.middleName == null);
    assertTrue(member.contactDetails.lastName.equals(contactDetails.lastName));
    assertTrue(member.contactDetails.email.equals(contactDetails.email));
    assertTrue(member.contactDetails.phone.equals(contactDetails.phone));
    assertTrue(member.contactDetails.homeAddress.equals(contactDetails.homeAddress));
    assertTrue(member.contactDetails.officeAddress.equals(contactDetails.officeAddress));
    assertTrue(member.contactDetails.homePhone.equals(contactDetails.homePhone));
    assertTrue(member.contactDetails.officePhone.equals(contactDetails.officePhone));
    assertTrue(member.contactDetails.singaporeNRIC.equals(contactDetails.singaporeNRIC));
   
    //email cannot be invalid when updating
    contactDetails.email = "invalid";
    try {
      MemberRepository.updateContactDetails(id, contactDetails, SUPER_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
    }       
   
    //cannot update non existent member
    try {
      MemberRepository.updateContactDetails(98378, contactDetails, SUPER_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
    }
   
    //can update one's own record without any privilege
    contactDetails.email = "sathya.t@ishafoundation.org";
    MemberRepository.updateContactDetails(id, contactDetails, "sathya.t@ishafoundation.org");
   
    //but privilege required to edit someone else's record
    try {
      MemberRepository.updateContactDetails(id, contactDetails, "sathya.isha@gmail.com");
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INVALID_USER);
    }
   
    //but not for user with edit member privilege
    MemberRepository.updateContactDetails(id, contactDetails, USER_WITH_EDITMEMBER_PRIVILEGE);
    //no exception
   
    //can change email address
    contactDetails.email = "sathya.isha@gmail.com";
    MemberRepository.updateContactDetails(id, contactDetails, "sathya.t@ishafoundation.org");
   
    member = MemberRepository.get(id, SUPER_USER);
    assertTrue(member.contactDetails.email.equals("sathya.isha@gmail.com"));
   
    //cannot get by old email id
    assertTrue(null == MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER));   
  }
 
  @Test
  public void addCenterTest() {
    CenterRepository.add("sgp");
    Center sgp = CenterRepository.get("sgp");
    CenterRepository.add("kl");
    Center kl = CenterRepository.get("kl");
    CenterRepository.add("penang");
    Center penang = CenterRepository.get("penang");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";
    contactDetails.email = "sathya.t@ishafoundation.org";
   
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    int id = member.id;
   
    //can add center for one's own record or should have editmember privilege
    try {
      MemberRepository.addCenter(id, kl.id, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
       
    MemberRepository.addCenter(id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE)
    MemberRepository.addCenter(id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
             
    member = MemberRepository.get(id, SUPER_USER);
    assertTrue(member.additionalCenters.size() == 2);
    //should be sorted by center
    assertTrue(member.additionalCenters.get(0).name.equals("kl"));
    assertTrue(member.additionalCenters.get(1).name.equals("penang"));
   
    //adding duplicate causes exception
    try {
      MemberRepository.addCenter(member.id, kl.id, USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false);
    } catch (Exception ex) {
      assertTrue(true);
    }
  }
 
  @Test
  public void deleteCenterTest() {

    CenterRepository.add("singapore");
    Center sgp = CenterRepository.get("singapore");
    CenterRepository.add("kl");
    Center kl = CenterRepository.get("kl");
    CenterRepository.add("penang");
    Center penang = CenterRepository.get("penang");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";   
    contactDetails.email = "sathya.t@ishafoundation.org";
   
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER)
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    int id = member.id;
   
    MemberRepository.addCenter(id, penang.id, SUPER_USER);
    MemberRepository.addCenter(id, kl.id, SUPER_USER);
   
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.additionalCenters.size() == 2);   
   
    //can delete center for one's own record or should have editmember
    try {
      MemberRepository.deleteCenter(member.id, kl.id, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {     
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
   
    MemberRepository.deleteCenter(id, kl.id, "sathya.t@ishafoundation.org");
    MemberRepository.deleteCenter(id, penang.id, USER_WITH_EDITMEMBER_PRIVILEGE);
   
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.additionalCenters.size() == 0);
       
    //cannot delete owning center
    try {
      MemberRepository.deleteCenter(id, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_PRECONDITION_FAILURE);
    }
  } 

  @Test
  public void addDeleteUnlistedProgram() {
    CenterRepository.add("singapore");
    Center singapore = CenterRepository.get("singapore");
   
    ProgramTypeRepository.add("bsp");
    ProgramTypeRepository.add("ssy");
    ProgramType bsp = ProgramTypeRepository.get("bsp");
    ProgramType ssy = ProgramTypeRepository.get("ssy");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya";
    contactDetails.email = "sathya.t@ishafoundation.org";
   
    MemberRepository.add(contactDetails, singapore.id, SUPER_USER);
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    int id = member.id;
   
    UnlistedProgram unlistedProgram = new UnlistedProgram();
    unlistedProgram.programTypeId = bsp.id;
    unlistedProgram.programType = bsp.name;
    unlistedProgram.month = 12;
    unlistedProgram.year = 2000;
    unlistedProgram.venue = "isha yoga center";
    unlistedProgram.teacher = "sadhguru";
   
    MemberRepository.addUnlistedProgram(id, unlistedProgram, SUPER_USER);
   
    unlistedProgram.programTypeId = ssy.id;
    unlistedProgram.programType = ssy.name;
    unlistedProgram.month = 5;
    unlistedProgram.year = 2000;
    unlistedProgram.venue = "mylapore";
    unlistedProgram.teacher = "swaminathan";
   
    MemberRepository.addUnlistedProgram(id, unlistedProgram, SUPER_USER);
   
    member = MemberRepository.get(id, SUPER_USER);
    assertTrue(member.unlistedPrograms.size() == 2);
    //should be sorted by date
    assertTrue(member.unlistedPrograms.get(0).programTypeId == ssy.id);
    assertTrue(member.unlistedPrograms.get(0).programType.equals("ssy"));
    assertTrue(member.unlistedPrograms.get(0).month == 5);
    assertTrue(member.unlistedPrograms.get(0).year == 2000);
    assertTrue(member.unlistedPrograms.get(0).venue.equals("mylapore"));
    assertTrue(member.unlistedPrograms.get(0).teacher.equals("swaminathan"));
   
    assertTrue(member.unlistedPrograms.get(1).programTypeId == bsp.id)
   
   
    //delete unlisted program
    int ssyId = member.unlistedPrograms.get(0).id;
    int bspId = member.unlistedPrograms.get(1).id;
    MemberRepository.deleteUnlistedProgram(ssyId, SUPER_USER);
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.unlistedPrograms.size() == 1);
    assertTrue(member.unlistedPrograms.get(0).programTypeId == bsp.id);
   
    MemberRepository.deleteUnlistedProgram(bspId, SUPER_USER);
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.unlistedPrograms.size() == 0);
   
    //test privileges
    //login should be the same user or should have privilege
    try {
      MemberRepository.addUnlistedProgram(member.id, unlistedProgram, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);     
    }       
   
    MemberRepository.addUnlistedProgram(member.id, unlistedProgram, "sathya.t@ishafoundation.org");
    //no exception
   
    MemberRepository.addUnlistedProgram(member.id, unlistedProgram,
        USER_WITH_EDITMEMBER_PRIVILEGE);
    //no exception
   
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.unlistedPrograms.size() == 2)
   
    //should either have privilege or user's own record
    try {
      MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(0).id,
          VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
   
    //user can edit his own record
    MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(0).id,
        "sathya.t@ishafoundation.org");
   
    //or need to have privilege
    MemberRepository.deleteUnlistedProgram(member.unlistedPrograms.get(1).id,
        USER_WITH_EDITMEMBER_PRIVILEGE);
   
    member = MemberRepository.get(member.id, SUPER_USER);
    assertTrue(member.unlistedPrograms.size() == 0);
   
    //cannot delete non existant unlisted program
    try {
      MemberRepository.deleteUnlistedProgram(109289, //non existant
        USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_DOES_NOT_EXIST);
    }                           
  }
 
  @Test
  public void deleteUnlistedProgram() {
    //test case is in addDeleteUnlistedProgram   
  }
 
  @Test
  public void getMemberIdAndContactDetailsTest() {
    List<String> emails = new ArrayList<>();
    emails.add("sathya.t@ishafoundation.org");
    emails.add("sathya.isha@gmail.com");
   
    List<Member> members = MemberRepository.getMemberIdAndContactDetails(emails, SUPER_USER);
    assertTrue(members.size() == 0);
   
    //add member
    Center sgp = CenterRepository.add("singapore");
   
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.firstName = "sathya"
    contactDetails.email = "sathya.t@ishafoundation.org";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
    assertTrue(null != MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER));
   
    contactDetails.email = "sathya.isha@gmail.com";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
    assertTrue(null != MemberRepository.get("sathya.isha@gmail.com", SUPER_USER));
   
    contactDetails.email = "sathyanarayanant@gmail.com";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
    assertTrue(null != MemberRepository.get("sathyanarayanant@gmail.com", SUPER_USER));
   
    members = MemberRepository.getMemberIdAndContactDetails(emails, SUPER_USER);
    assertTrue(members.size() == 2);
   
    //test privilege
    try {
      MemberRepository.getMemberIdAndContactDetails(emails, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
   
    MemberRepository.getMemberIdAndContactDetails(emails, USER_WITH_EDITMEMBER_PRIVILEGE);
    //no exception   
  }

  @Test
  public void addManyTest() {
    Center sgp = CenterRepository.add("singapore");
   
    List<ContactDetails> contactDetailsList = new ArrayList<>();
    ContactDetails contactDetails1 = new ContactDetails();
    contactDetails1.email = "sathya.t@ishafoundation.org";
    contactDetails1.firstName = "sathyanarayanan";
    contactDetails1.lastName = "thilakan";
    contactDetails1.phone = "+6598361844";
    contactDetailsList.add(contactDetails1);
   
    ContactDetails contactDetails2 = new ContactDetails();
    contactDetails2.email = "ramya.c@ishafoundation.org";
    contactDetails2.firstName = "ramya";
    contactDetails2.lastName = "chidambaram";   
    contactDetailsList.add(contactDetails2);
   
    ContactDetails contactDetails3 = new ContactDetails();
    contactDetails3.email = "thulasidhar@gmail.com";
    contactDetails3.firstName = "thulasidhar";
    contactDetails3.phone = "+6592705371"
    contactDetailsList.add(contactDetails3);
   
    MemberRepository.addMany(contactDetailsList, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(member.contactDetails.firstName.equals("sathyanarayanan"));
    assertTrue(member.contactDetails.lastName.equals("thilakan"));
    assertTrue(member.contactDetails.phone.equals("+6598361844"));
    assertTrue(member.owningCenter.id == sgp.id);
   
    member = MemberRepository.get("ramya.c@ishafoundation.org", USER_WITH_EDITMEMBER_PRIVILEGE);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("ramya.c@ishafoundation.org"));
    assertTrue(member.contactDetails.firstName.equals("ramya"));
    assertTrue(member.contactDetails.lastName.equals("chidambaram"));
    assertTrue(member.owningCenter.id == sgp.id);
   
    member = MemberRepository.get("thulasidhar@gmail.com", "thulasidhar@gmail.com");
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("thulasidhar@gmail.com"));
    assertTrue(member.contactDetails.firstName.equals("thulasidhar"));
    assertTrue(member.contactDetails.phone.equals("+6592705371"));
    assertTrue(member.owningCenter.id == sgp.id);
   
    //if an error occurs - whole transaction should be rolled back
    contactDetailsList.clear();
    contactDetails1 = new ContactDetails();
    contactDetails1.email = "simansmile@yahoo.com";   
    contactDetailsList.add(contactDetails1);
   
    contactDetails2 = new ContactDetails();
    contactDetails2.email = "isha.meena@gmail.com";   
    contactDetailsList.add(contactDetails2);   
   
    try {
      MemberRepository.addMany(contactDetailsList, 189000, USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false); //as center id is non existent
    } catch (Exception ex) {
      assertTrue(true);
    }
   
    //check whole transaction is rolled back
    assertTrue(null == MemberRepository.get("simansmile@yahoo.com", "simansmile@yahoo.com"));
    assertTrue(null == MemberRepository.get("isha.meena@gmail.com", "isha.meena@gmail.com"));
   
    //privilege
    contactDetailsList.clear();
    contactDetails1 = new ContactDetails();
    contactDetails1.email = "chandru@yahoo.com";   
    contactDetailsList.add(contactDetails1);
   
    try {
      MemberRepository.addMany(contactDetailsList, 189000, VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }   
  }
 
  @Test
  public void updateManyContactDetailsTest() {   
    Center sgp = CenterRepository.add("singapore");
   
    List<ContactDetails> contactDetailsList = new ArrayList<>();
    ContactDetails contactDetails1 = new ContactDetails();
    contactDetails1.email = "sathya.t@ishafoundation.org";
    contactDetails1.firstName = "sathyanarayanan";
    contactDetails1.lastName = "thilakan";
    contactDetails1.phone = "+6598361844";
    contactDetails1.officeAddress = "one raffles quay";
    contactDetailsList.add(contactDetails1);
   
    ContactDetails contactDetails2 = new ContactDetails();
    contactDetails2.email = "ramya.c@ishafoundation.org";
    contactDetails2.firstName = "ramya";
    contactDetails2.lastName = "chidambaram";   
    contactDetailsList.add(contactDetails2);
   
    ContactDetails contactDetails3 = new ContactDetails();
    contactDetails3.email = "thulasidhar@gmail.com";
    contactDetails3.firstName = "thulasidhar";
    contactDetails3.phone = "+6592705371"
    contactDetailsList.add(contactDetails3);
   
    MemberRepository.addMany(contactDetailsList, sgp.id, USER_WITH_EDITMEMBER_PRIVILEGE);
   
    Member member1 = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    Member member2 = MemberRepository.get("ramya.c@ishafoundation.org", SUPER_USER);
    Member member3 = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
   
    List<Integer> memberIds = new ArrayList<>();
    memberIds.add(member1.id);
    memberIds.add(member2.id);
    memberIds.add(member3.id);
   
    contactDetailsList.clear();
    member1.contactDetails.homeAddress = "block 292b";
    member1.contactDetails.singaporeNRIC = "S8079430D";
    contactDetailsList.add(member1.contactDetails);
    member2.contactDetails.homeAddress = "shivapadam";
    contactDetailsList.add(member2.contactDetails);
    member3.contactDetails.email = "invalid";
    member3.contactDetails.officeAddress = "tao payoh";
    contactDetailsList.add(member3.contactDetails);
   
    try {
    MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
        USER_WITH_EDITMEMBER_PRIVILEGE);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
    }
   
    member3.contactDetails.email = "thulasidhar@gmail.com";
    MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
        USER_WITH_EDITMEMBER_PRIVILEGE);
   
    member1 = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    member2 = MemberRepository.get("ramya.c@ishafoundation.org", SUPER_USER);
    member3 = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
   
    assertTrue(member1.contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(member1.contactDetails.homeAddress.equals("block 292b"));
    assertTrue(member1.contactDetails.singaporeNRIC.equals("S8079430D"));
   
    assertTrue(member2.contactDetails.email.equals("ramya.c@ishafoundation.org"));
    assertTrue(member2.contactDetails.homeAddress.equals("shivapadam"));
    assertTrue(member2.contactDetails.firstName.equals("ramya"));
    assertTrue(member2.contactDetails.lastName.equals("chidambaram"));
   
    assertTrue(member3.contactDetails.email.equals("thulasidhar@gmail.com"));
    assertTrue(member3.contactDetails.lastName == null);
    assertTrue(member3.contactDetails.officeAddress.equals("tao payoh"));
   
    //privilege
    try {
      MemberRepository.updateManyContactDetails(memberIds, contactDetailsList,
          VALID_USER);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }   
  }
 
  @Test
  public void applyChangesTest() {
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.email = "sathya.isha@gmail.com";
    contactDetails.firstName = "sathya";
    contactDetails.lastName = "thilakan";
    contactDetails.phone = "+6598361844";
    contactDetails.homeAddress = "block 292b";
   
    ContactDetails changes = new ContactDetails();
    changes.email = "sathya.t@ishafoundation.org";
    changes.middleName = "narayanan";
    changes.officeAddress = "level 28, one raffles quay";
   
    contactDetails = MemberRepository.applyChanges(contactDetails, changes);     
   
    //todo test changes
    assertTrue(contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(contactDetails.firstName.equals("sathya"));
    assertTrue(contactDetails.middleName.equals("narayanan"));
    assertTrue(contactDetails.lastName.equals("thilakan"));
    assertTrue(contactDetails.phone.equals("+6598361844"));
    assertTrue(contactDetails.homeAddress.equals("block 292b"));
    assertTrue(contactDetails.officeAddress.equals("level 28, one raffles quay"));
  }
 
  @Test
  public void addOrUpdateManyTest() {
    Center sgp = CenterRepository.add("singapore");
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.email = "sathya.t@ishafoundation.org";
    contactDetails.firstName = "sathya";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
       
    contactDetails.email = "thulasidhar@gmail.com";
    contactDetails.firstName = "thulasi";
    MemberRepository.add(contactDetails, sgp.id, SUPER_USER);
   
    List<ContactDetails> contactDetailslList = new ArrayList<>();
    ContactDetails c1 = new ContactDetails();
    c1.email = "isha.srividhya@gmail.com";
    c1.firstName = "srividhya";
    c1.lastName = "radhakrishnan";
    contactDetailslList.add(c1);
   
    ContactDetails c2 = new ContactDetails();
    c2.email = "isha.vijay@gmail.com";
    c2.firstName = "vijaykumar";
    c2.lastName = "krishnamurthy";
    contactDetailslList.add(c2);
   
    ContactDetails c3 = new ContactDetails();
    c3.email = "sathya.t@ishafoundation.org";
    c3.lastName = "thilakan";
    contactDetailslList.add(c3);
   
    ContactDetails c4 = new ContactDetails();
    c4.email = "thulasidhar@gmail.com";
    c4.firstName = "thulasidhar";
    c4.lastName = "kosalram";
    contactDetailslList.add(c4);
   
    MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
    Member member = MemberRepository.get("sathya.t@ishafoundation.org", SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("sathya.t@ishafoundation.org"));
    assertTrue(member.contactDetails.firstName.equals("sathya"));
    assertTrue(member.contactDetails.lastName.equals("thilakan"));
   
    member = MemberRepository.get("thulasidhar@gmail.com", SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("thulasidhar@gmail.com"));
    assertTrue(member.contactDetails.firstName.equals("thulasidhar"));
    assertTrue(member.contactDetails.lastName.equals("kosalram"));
   
    member = MemberRepository.get("isha.srividhya@gmail.com", SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("isha.srividhya@gmail.com"));
    assertTrue(member.contactDetails.firstName.equals("srividhya"));
    assertTrue(member.contactDetails.lastName.equals("radhakrishnan"));
   
    member = MemberRepository.get("isha.vijay@gmail.com", SUPER_USER);
    assertTrue(member != null);
    assertTrue(member.contactDetails.email.equals("isha.vijay@gmail.com"));
    assertTrue(member.contactDetails.firstName.equals("vijaykumar"));
    assertTrue(member.contactDetails.lastName.equals("krishnamurthy"));
   
    //privilege required
    try {
      MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, VALID_USER);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_INSUFFICIENT_PERMISSION);
    }
   
    //cannot add more than limit
    for (int i = 0; i < Limits.Member.MAX_NUMRECORDS_BULKIMPORT + 1; i++) {
      ContactDetails c5 = new ContactDetails();
      c5.email = "dummy" + i + "@dummy.com";
      contactDetailslList.add(c5);   
    }
    try {
      MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_OUT_OF_BOUNDS);
    }
   
    //cannot have duplicate email
    contactDetailslList.clear();
    contactDetailslList.add(c1);
    contactDetailslList.add(c2);
    c1.email = "dummy@email.com";
    c2.email = c1.email;
    try {
      MemberRepository.addOrUpdateMany(sgp.id, contactDetailslList, USER_WITH_EDITMEMBER_PRIVILEGE);
      assertTrue(false);
    } catch (APIException ex) {
      assertTrue(ex.statusCode == Status.ERROR_RESOURCE_INCORRECTLY_SPECIFIED);
    }           
  } 
}
TOP

Related Classes of gwtappcontainer.server.apps.insight.MemberRepositoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.